/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DTD;

import DTD.Validador.ValidadorSintaxisAttList;
import DTD.Validador.ValidadorSintaxisElement;
import DTD.Validador.ValidadorSintaxisPrologo;

/**
 * Clase que valida la sintaxis de las etiquetas del DTD del archivo XML
 * @author Administrador
 */
public class DTDValidadorSintaxis {
    //Constantes que corresponden a cada uno de los bloques del XML a los que puede
    //hacer referencia el DTD o el prologo del DTD
    public static final int ERROR    = -1;
    public static final int ATTLIST  = 0;
    public static final int ELEMENT  = 1;
    public static final int ENTITY   = 2;
    public static final int DOC_INFO = 3;
    //validadores auxiliares
    private ValidadorSintaxisElement validadorElement;
    private ValidadorSintaxisAttList validadorAttList;
    private ValidadorSintaxisPrologo validadorPrologo;

    public DTDValidadorSintaxis() {
        validadorElement = new ValidadorSintaxisElement();
        validadorAttList = new ValidadorSintaxisAttList();
        validadorPrologo = new ValidadorSintaxisPrologo();
    }

    /**
     * Método que determina si la cadena recibida por parámetro corresponde a la
     * sintaxis de un element (etiqueta), attlist (atributo de una etiqueta) o
     * del prologo del DTD
     * @param aValidar Cadena de caracteres a evaluar
     * @return int que representa algunos de los tipos mencionados. -1 en caso de error.
     */
    public int validar(String aValidar) {
        int resultado = DTDValidadorSintaxis.ERROR; //por defecto envia errot

        try {
            if (validadorElement.validar(aValidar)) { //corresponde a la sintaxis de una etiqueta
                resultado = DTDValidadorSintaxis.ELEMENT;
            } else if (validadorAttList.validar(aValidar)) {//corresponde a la sintaxis de los atributos de una etiqueta
                resultado = DTDValidadorSintaxis.ATTLIST;
            } else if (validadorPrologo.validar(aValidar)) {//corresponde al prologo del DTD
                resultado = DTDValidadorSintaxis.DOC_INFO;
            }
        } catch (Exception e) {
            resultado = DTDValidadorSintaxis.ERROR;
        } finally {
            return resultado;
        }
    }

}
